package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.UserBean;


/**
 * 用户业务接口
 */
public interface IUserService {
    /**
     * 登录
     * 1、根据账号和密码查询用户，如果查询失败，返回null，查询成功，返回登录用户对象
     * 2、如果登录成功，添加登录日志记录，同时在session中绑定登录用户，在登录用户中需要绑定权限集合
     * @param userName 用户名
     * @param password 密码
     * @return 登录用户
     */
    UserBean login(String userName,String password);

    /**
     * 根据用户名查找用户
     * @param userName 用户名
     * @return 用户对象
     */
    UserBean findByName(String  userName);
    /**
     * 动态条件分页查询用户
     * @param pageNO  页码
     * @param userName 用户名称
     * @return 分页对象
     */
    IPage<UserBean> findByItem(Integer pageNO, String userName);

    /**
     * 根据用户名、真实姓名添加用户，同时添加用户所拥有的角色
     * @param user 用户
     * @param roleIdArr 角色id数组
     */
    boolean add(UserBean user,Integer[] roleIdArr);

    /**
     * 根据用户id删除用户，同时删除用户所拥有的角色（删中间表）
     * @param userId 用户id
     */
    void del(Integer userId);

    /**
     * 根据用户id，查询用户信息，并查询用户拥有角色集合
     * @param userId 用户id
     * @return 用户对象
     */
    UserBean findById(Integer userId);

    /**
     * 根据用户id，角色id集合，修改用户角色
     * @param userId  用户id
     * @param roleIdArray 角色id集合
     */
    void update(Integer userId,Integer[] roleIdArray);

    /**
     * 根据用户id修改密码
     * @param userId 用户id
     * @param password 新密码
     */
    boolean updatePwd(Integer userId,String password,String oldPassword);

}
